package com.company.genealogy.common.listener;

import com.company.genealogy.common.filter.JwtAuthenticationFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

/**
 * 用户缓存事件监听器
 * 当用户信息更新时，清除相关缓存
 */
@Component
public class UserCacheEventListener {

    @Autowired
    private JwtAuthenticationFilter jwtAuthenticationFilter;
    /**
     * 用户信息更新事件
     */
    @EventListener
    public void handleUserUpdateEvent(UserUpdateEvent event) {
        // 清除用户相关的缓存
        if (event.getUserId() != null) {
            // 这里可以通过用户ID清除所有相关的token缓存
            // 实际实现可能需要遍历所有相关的token
            System.out.println("用户信息更新，清除缓存: " + event.getUserId());
        }
    }

    /**
     * 用户权限更新事件
     */
    @EventListener
    public void handleUserPermissionUpdateEvent(UserPermissionUpdateEvent event) {
        // 清除用户权限相关的缓存
        if (event.getUserId() != null) {
            System.out.println("用户权限更新，清除缓存: " + event.getUserId());
        }
    }

    /**
     * 用户信息更新事件
     */
    public static class UserUpdateEvent {
        private final Long userId;

        public UserUpdateEvent(Long userId) {
            this.userId = userId;
        }

        public Long getUserId() {
            return userId;
        }
    }

    /**
     * 用户权限更新事件
     */
    public static class UserPermissionUpdateEvent {
        private final Long userId;

        public UserPermissionUpdateEvent(Long userId) {
            this.userId = userId;
        }

        public Long getUserId() {
            return userId;
        }
    }
} 